<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<p>
  选择排序：
  先找到最小值放在第一位，接着找第二位，以此类推... ，<br>
  算法复杂度 O(n平方) <br>
  1. 保存最小索引 <br>
  2. 寻找更小索引 <br>
  3. 找到更小索引 交换 <br>
</p>
<script>
	(function () {
		function selectSort (arr) {
			const len = arr.length
			if (len <= 1) return arr

			let mixIndex // 标记最小索引
			for (let i = 0; i < len; i ++) {
				mixIndex = i
				for (let j = i + 1; j < len; j ++) {
					arr[j] < arr[mixIndex] && (mixIndex = j)
				}
				mixIndex !== i && swap(arr, i, mixIndex)
			}

			return arr
		}

		function swap (arr, a, b) {
			arr[a] = arr[a] ^ arr[b]
			arr[b] = arr[a] ^ arr[b]
			arr[a] = arr[a] ^ arr[b]
		}

		console.log(selectSort([9, 5, 3, 4, 100, 2, 1]))
	})()
</script>
</body>
</html>
